// 页面: 工作台-添加巡检日志-巡检: 消防巡检
const $app = getApp()
Page({
  // 页面的初始数据
  data: {
    baseUrl: $app.baseUrl || null,
    iconData: $app.iconData || {},
    // ===== 地址传参 =====
    loadParam: {
      taskNum: null, // 巡检任务编号
      overDue: null, // 是否逾期
      buildingId: null // 楼宇id
    },
    // ===== 参数 =====
    param: {},
    fileKeys: ['sitePicture'],
    error: null, // 错误验证
    // ========== 列表数据 ==========
    listData: {
      checkResult: [{ id: '0', name: '正常' }, { id: '1', name: '异常' }], // 巡检结果
      deviceNum: [] // 异常设施
    },
    // ========== 组件显示 ==========
    dialogShow: false
  },
  model (e) { $app.$common_wx.model(e, this) }, // 双向绑定
  // ========== 生命周期: 页面初次渲染完成 ==========
  onReady: function () {},
  // ========== 生命周期: 页面显示 ==========
  onShow: function () {},
  // ========== 生命周期: 页面隐藏 ==========
  onHide: function () {},
  // ========== 生命周期: 页面卸载 ==========
  onUnload: function () {},
  // ========== 生命周期: 页面加载 ==========
  onLoad: function (options) {
    if (!options.taskNum) return
    this.setData({ loadParam: options })
    this.init(options.taskNum) // 初始化
  },
  // ========== 初始化 ==========
  init (taskNum) {
    let param = {
      ...this.data.loadParam,
      checkPerson: $app.userInfo.id, // 巡检人id
      checkPersonName: $app.userInfo.name, // 巡检人name
      checkDate: $app.$common.dateFormat(new Date(), 'YYYY-MM-DD'), // 巡检日期
      checkResult: '0', // 巡检结果 默认0正常
      deviceNum: null, // 异常设施编号
      conditionExplain: null, // 情况说明
      sitePicture: null, // 现场照片sitePicture
      sitePictureArr: [], // 现场照片arr
      taskStatus: '1', // 巡检任务状态 0：已完成 1:未完成
      checkResult: '0', //(巡检结果 0：正常 1：异常)
      deviceNum0: '', // 正常设施,号连接
      deviceNum: '', // 异常设施,号连接
      normal: [], // 正常设施数组
      anomaly: [] // 异常设施数组
    }
    this.setData({ param })
    this.getBillData_param(taskNum)
    this.getListData_deviceNum(this.data.loadParam.buildingId)
  },
  // ========== 获取验收日志 ==========
  getBillData_param (val) {
    $app.$common.openLoading() // 开启加载
    $app.$api.checkTask.selectCheckDetail({taskNum: val}).then(({ data }) => {
      console.log('api-巡检日志', data)
      let newData = data
      $app.$common.closeLoading() // 关闭加载
      if (newData){
        this.data.fileKeys.forEach(k => { newData[k + 'Arr'] = newData[k] ? newData[k].split(',') : [] })
        this.setData({
          ['param.conditionExplain']: newData.conditionExplain,
          ['param.checkResult']: newData.checkResult,
          ['param.checkPersonName']: newData.checkPersonName,
          ['param.deviceNum0']: newData.deviceNum0,
          ['param.deviceNum']: newData.deviceNum,
          ['param.sitePicture']: newData.sitePicture,
          ['param.sitePictureArr']: newData.sitePictureArr,
        })
      }
    }).catch(({ type, res }) => {})
  },
  // ========== 获取列表数据: 异常设施 ==========
  getListData_deviceNum (buildingId) {
    if (!buildingId) return
    $app.$common.openLoading() // 开启加载
    $app.$api.checkTask.selectFirelist({ buildingId: buildingId }).then(({ data }) => {
      console.log('axios-列表数据-消防设施', data)
      var normal = [] // 正常数组
      var anomaly = [] // 异常数组
      data.forEach(b => {
        if(b.checkstate === '0') { b.checkstate = '' }
        if (b.checkstate === '1') {
          normal.push(b.deviceNum)
        }
        if (b.checkstate === '2') {
          anomaly.push(b.deviceNum)
        }
      })
      this.setData({
        ['listData.deviceNum']: data || [],
        ['param.normal']: normal || [],
        ['param.anomaly']: anomaly || []
      })
      console.log(this.data.param)
      $app.$common.closeLoading() // 关闭加载
    }).catch((res, type) => {})
  },
  // ========== 扫二维码 ==========
  scan () {
    $app.$common_wx.scan().then((res) => {
      // $app.$common.message('本功能暂未开发', 'error')
      console.log(res, '二维码信息')
      // let deviceNum = this.data.param.deviceNum
      // deviceNum = deviceNum ? `${deviceNum},${res.result}` : res.result
      // this.setData({ ['param.deviceNum']: deviceNum })
    })
  },
  // ========== 扫描后双向绑定数组 ==========
  myevent (e) {
    this.setData({
      ['listData.deviceNum']: e.detail
    })
  },
  // ========== 点确定分类正常异常的数组 ==========
  malyArr (e) {
    this.setData({
      ['param.normal']: e.detail.normal,
      ['param.anomaly']: e.detail.anomaly
    })
  },
  // ========== 提交收费记录 ==========
  save () {
    const param = this.data.param
    let arr1 = param.normal || [] // 正常
    let arr2 = param.anomaly || [] // 异常
    console.log(param)
    console.log(arr1, arr2)
    if (arr1.length + arr2.length <= 0) {
      $app.$common.message('请选择巡检设备', 'error')
      return
    }
    // 判断正常数组和异常数组相加是否等于设备数组 等于说明任务状态为已完成
    param.taskStatus = arr1.length + arr2.length === this.data.listData.deviceNum.length ? '0' : '1'
    // 判断巡检结果 只要有异常 
    param.checkResult = arr2.length ? '1' : '0'
    // 正常异常转换字符串逗号分隔
    param.deviceNum0 = arr1.join(',')
    param.deviceNum = arr2.join(',')
    // 1.处理消防设备数据，
    // 2.验证必填项
    var verify = {
      conditionExplain: '情况说明',
      sitePictureArr: '现场照片'
    }
    param.checkResult === '0' && delete verify.deviceNum
    for (const k in verify) {
      const val = Array.isArray(param[k]) ? param[k][0] : param[k]
      if (!$app.$common.noNull(val)) {
        this.setData({ error: k })
        $app.$common.message(verify[k] + '不能为空') // 提示信息
        return
      }
    }
    this.setData({ error: null })
    // 3.上传
    $app.$common.openLoading() // 开启加载
    this.selectComponent("#zjImage").upload('checkTask', 'addWenjian') // 文件上传
  },
  // ========== '上传'结束后 ==========
  uploadEnd (e) {
    e = e.detail
    if (e.result === 'fail' || e.result === 'complete') {
      $app.$common.closeLoading() // 关闭加载
      const text = `上传失败${e.failUp}个`
      $app.$common.message(text, 'error')
    } else {
      // $app.$common.closeLoading() // 关闭加载
      this.saveAgain()
    }
  },
  // ========== 继续保存 ==========
  saveAgain () {
    const param = this.data.param
    $app.$common.closeLoading() // 关闭加载
    this.data.fileKeys.forEach(k => { param[k] = param[k + 'Arr'].join(',') })
    // 调接口
    $app.$api.checkTask.addCheckDaily(param).then((res) => {
      console.log('api-保存成功', res)
      $app.$common.closeLoading() // 关闭加载
      $app.$common_wx.back('保存成功') // 返回上一页
    }).catch(() => {})
  }
})